Modern computer systems run various software or programs, for instance, in the background or foreground. However, it is usually not known if a given program is actually being used or not even if it is running. Similarly, if a program is running and servicing requests, it would be desirable to know how frequently requests are being made and when the last such request was made.
Information about software usage is sometimes available in the form of activity logs that keep records for incoming read and update requests, for example, in web and proxy servers. However, logging is disabled on most other production systems such as databases, messaging servers, and application servers. Some middleware systems allow querying their configuration information and some logged data only when such systems are running. However, it is sometimes desirable to query software information without starting the corresponding software services.